/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pkgPrincipal;

import java.util.Random;
import jgame.JGObject;

/**
 *
 * @author Mike
 */
public class Monstre extends JGObject
{

    /**
     * Coordonnee en X du monstre
     */
    private double coordX;
    /**
     * Coordonnee en Y du monstre
     */
    private double coordY;
    /**
     * Variable contenant l'etat du monstre (vivant ou mort)
     */
    private boolean alive = true;

    /**
     * Constructeur de l'objet monstre
     * @param coordX coordonnee en X ou le monstre devrait apparaitre
     * @param coordY coordonnee en Y ou le monstre devrait apparaitre
     */
    public Monstre(double coordX, double coordY)
    {
        // Appel au constructeur de JGObject
        super("wMonstre", true, coordX, coordY, 3, "monster");

        // Assignation des valeurs recues en argument aux variables locales
        this.coordX = coordX;
        this.coordY = coordY;

        // Assignation de la direction initiale par defaut de facon aleatoire
        Random r = new Random();
        int direct;
        direct = r.nextInt();

        while (direct < 0)
        {
            direct = r.nextInt();
        }
        if (direct % 2 == 0)
        {
            xdir = 1;
        }
        else
        {
            xdir = -1;
        }
        ydir = 0;
        // Assignation de la vitesse par defaut
        this.setSpeed(eng.random(2, 4));
    }

    /**
     * @return Retourne la coordonnee en X du monstre
     */
    public double getCoordX()
    {
        return coordX;
    }

    /**
     * @return Retourne la coordonnee en Y du monstre
     */
    public double getCoordY()
    {
        return coordY;
    }

    /**
     * Methode qui permet de bouger le monstre
     */
    @Override
    public void move()
    {
        // Si le monstre touche le cote droit de l'ecran
        if (x > 350 && xdir > 0)
        {
            // On le change de direction
            xdir = -xdir;
        }

        // Si le monstre touche le cote gauche de l'ecran
        if (x < 1 && xdir < 0)
        {
            // On le change de direction
            xdir = -xdir;
        }
    }

    /**
     * Methode qui gere les collisions avec le monstre
     * @param object Objet qui a eu une collision avec le monstre
     */
    @Override
    public void hit(JGObject object)
    {
        if (ydir == 0)
        {
            // Si c'est un mouton
            if (object instanceof Mouton)
            {
                Mouton mouton = (Mouton) object;
                if (this.alive)
                {
                    eng.playAudio("sheepDead");
                    mouton.die();
                    eng.playAudio("youLose");
                }
            }
        }
    }

    /**
     * Methode qui applique les procedures pour tuer le monstre en question
     */
    public void die()
    {
        eng.playAudio("monsterDead");
        // Changer l'image pour montrer que le monstre est mort
        setImage("monsterDead");

        // Changer son etat pour dire qu'il est mort
        alive = false;
    }

    /**
     * Retourne l'etat du monstre
     * @return true si vivant, faux si mort
     */
    @Override
    public boolean isAlive()
    {
        return alive;
    }
}
